﻿using System;
using System.Linq;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using DTO;
using BLL;

namespace CRM.GUI.QLHeThong
{
    public partial class frmUpdateUser : DevExpress.XtraEditors.XtraForm
    {
        public frmUpdateUser(UserEntity user)
        {
            InitializeComponent();
            _oldUserinfo = user;
            ckbRegionCode.DataSource = SharedData.RegionList.Where(a => a.RegionLevel == 1).ToList();
            ckbRegionCode.DisplayMember = "RegionName";
            ckbRegionCode.ValueMember = "Region_Code";
            IntialLoad();
        }
        private UserEntity _oldUserinfo;
        private UserEntity _newUserinfo;
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            CheckInput();
            if (_newUserinfo != null)
            {
                Authentication au = new Authentication();
                au.UpdateUserInfo(_newUserinfo);
                MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
        }

        private void IntialLoad()
        {
            txtLastNameUser.Text = _oldUserinfo.LastName;
            txtFirstNameUser.Text = _oldUserinfo.FirstName;
            txtAccount.Text = _oldUserinfo.Account;
            txtPassword.Text = _oldUserinfo.Password;
            ckbRegionCode.SelectedValue = _oldUserinfo.Region_Code;
            txtExtensionPhone.Text = _oldUserinfo.TelephoneNumber;
        }

        private void CheckInput()
        { 
            _newUserinfo = new UserEntity();
            if (string.IsNullOrWhiteSpace(txtLastNameUser.Text))            
            {                
                MessageBox.Show("Xin nhập họ người dùng");
                txtLastNameUser.Focus();
                return;
            }
            if (string.IsNullOrWhiteSpace(txtFirstNameUser.Text))
            {
                MessageBox.Show("Xin nhập tên người dùng");
                txtFirstNameUser.Focus();
                return;
            }
            if (string.IsNullOrWhiteSpace(ckbRegionCode.Text) || ckbRegionCode.SelectedValue == null)
            {
                MessageBox.Show("Xin nhập tên vùng miền");
                ckbRegionCode.Focus();
                return;
            }
            if (string.IsNullOrWhiteSpace(txtAccount.Text))
            {
                MessageBox.Show("Xin nhập tên tài khoản");
                txtAccount.Focus();
                return;
            }
            if (string.IsNullOrWhiteSpace(txtPassword.Text))
            {
                MessageBox.Show("Xin nhập mật khẩu");
                txtPassword.Focus();
                return;
            }
            if (string.IsNullOrWhiteSpace(txtExtensionPhone.Text))
            {
                MessageBox.Show("Xin nhập số điện thoại");
                txtExtensionPhone.Focus();
                return;
            }
            if (ckbDefaultPass.CheckState == CheckState.Checked)
            {
                _newUserinfo.Password = txtAccount.Text;
            }
            else if (ckbDefaultPass.CheckState == CheckState.Unchecked)
            {
                _newUserinfo.Password = txtPassword.Text;
            }
            _newUserinfo.UserID = _oldUserinfo.UserID;
            _newUserinfo.LastName = txtLastNameUser.Text;
            _newUserinfo.FirstName = txtFirstNameUser.Text;
            _newUserinfo.Account = txtAccount.Text;
            _newUserinfo.TelephoneNumber = txtExtensionPhone.Text;
            _newUserinfo.Region_Code = (int)ckbRegionCode.SelectedValue;
            CheckUser(_newUserinfo);
        }

        private void CheckUser(UserEntity user)
        {
            Authentication au = new Authentication();
            if (_newUserinfo.Account != _oldUserinfo.Account)
            {
                if (au.IsUserExisted(user))
                {
                    MessageBox.Show("Tên đăng nhập này đã tồn tại\nXin hãy chọn tên khác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    _newUserinfo = null;
                    IntialLoad();
                    txtAccount.Focus();
                    return;
                }
            }
            
        }
    }
}